(function () {


    // 还有三个修饰符 都是加在属性的前面的
    // public 公共的
    // protected 受保护的
    // private 私有的

    class PeopleClass {
        static desc: string = "人类是高等动物要敬畏自然而不是征服自然"
        //desc是属于class而不是实例的
        readonly id: number
        //id是只读的
        // public name: string  //默认就是public 可以被自己的实例用 也能背 子类的实例用
        // protected name: string  //受保护的只能在自己以及子类中使用 出了类的范围就不能用了
        private name: string  //私有的 只在自己的class类中使用
        age: number
        constructor(name: string, age: number, id: number) {
            this.id = id
            this.name = name
            this.age = age

        }
        say(): void {
            console.log(this.name + "会说话");

        }
    }

    class Women extends PeopleClass {
        hair?: string
        constructor(name: string, age: number, id: number, hair?: string) {
            super(name, age, id)
            //super 在这里就是执行父类的构造函数
            this.hair = hair
        }
        run() {
            // console.log(this.name + "rurnunr")
            //报错 因为name是peopleclass私有的 只能在PeopleClass中使用
        }
    }

    let xiaolii = new PeopleClass("小丽", 18, 1)
    let anqila = new Women("安其拉", 18, 2, "长头发")
    xiaolii.say()

    // console.log(anqila.name);



})()